home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume8 / jove / part10 < prev    next >
Encoding:
Internet Message Format  |  1987-02-03  |  45.2 KB

  1. Subject:  v08i029:  The JOVE text editor, Part10/13
  2. Newsgroups: mod.sources
  3. Approved: mirror!rs
  4.  
  5. Submitted by: seismo!rochester!jpayne (Jonathan Payne)
  6. Mod.sources: Volume 8, Issue 29
  7. Archive-name: jove/Part10
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line,
  11. # then unpack it by saving it in a file and typing "sh file".
  12. # If all goes well, you will see the message "End of archive 10 (of 13)."
  13. # Contents:  doc/jove.2 doc/recover.nr
  14. PATH=/bin:/usr/bin:/usr/ucb; export PATH
  15. echo shar: extracting "'doc/jove.2'" '(39282 characters)'
  16. if test -f 'doc/jove.2' ; then 
  17.   echo shar: will not over-write existing file "'doc/jove.2'"
  18. else
  19. sed 's/^X//' >doc/jove.2 <<'@//E*O*F doc/jove.2//'
  20. X.NH 1
  21. XCommands for English Text
  22. X.XS \n(PN
  23. X\*(SN Commands for English Text
  24. X.XE
  25. X.LP
  26. X\s-2JOVE\s0 has many commands that work on the basic units of English text:
  27. Xwords, sentences and paragraphs.
  28. X.NH 2
  29. XWord Commands
  30. X.XS \n(PN 5n
  31. X\*(SN Word Commands
  32. X.XE
  33. X.LP
  34. X\s-2JOVE\s0 has commands for moving over or operating on words.
  35. XBy convention,
  36. Xthey are all ESC commands.
  37. X.IP "ESC F" 20n
  38. XMove Forward over a word.
  39. X.IP "ESC B" 20n
  40. XMove Backward over a word.
  41. X.IP "ESC D" 20n
  42. XKill forward to the end of a word.
  43. X.IP "ESC Rubout" 20n
  44. XKill backward to the beginning of a word.
  45. X.LP
  46. XNotice how these commands form a group that parallels the character-
  47. Xbased commands,
  48. XC-F,
  49. XC-B,
  50. XC-D,
  51. Xand Rubout.
  52. X.LP
  53. XThe commands ESC F and ESC B move forward and backward over words.
  54. XThey are thus analogous to Control-F and Control-B,
  55. Xwhich move over single characters.
  56. XLike their Control- analogues,
  57. XESC F and ESC B move several words if given an argument.
  58. XESC F with a negative argument moves backward like ESC B,
  59. Xand ESC B with a negative argument moves forward.
  60. XForward motion stops right after the last letter of the word,
  61. Xwhile backward motion stops right before the first letter.
  62. X.LP
  63. XIt is easy to kill a word at a time.
  64. XESC D kills the word after point.
  65. XTo be precise,
  66. Xit kills everything from point to the place ESC F would move to.
  67. XThus,
  68. Xif point is in the middle of a word,
  69. Xonly the part after point is killed.
  70. XIf some punctuation comes after point,
  71. Xand before the next word,
  72. Xit is killed along with the word.
  73. XIf you wish to kill only the next word but not the punctuation,
  74. Xsimply do ESC F to get to the end,
  75. Xand kill the word backwards with ESC Rubout.
  76. XESC D takes arguments just like ESC F.
  77. X.LP
  78. XESC Rubout kills the word before point.
  79. XIt kills everything from point back to where ESC B would move to.
  80. XIf point is after the space in "FOO, BAR",
  81. Xthen "FOO, " is killed.
  82. XIf you wish to kill just "FOO",
  83. Xthen do a ESC B and a ESC D instead of a ESC Rubout.
  84. X.NH 2
  85. XSentence Commands
  86. X.XS \n(PN 5n
  87. X\*(SN Sentence Commands
  88. X.XE
  89. X.LP
  90. XThe \s-2JOVE\s0 commands for manipulating sentences and paragraphs are
  91. Xmostly ESC commands,
  92. Xso as to resemble the word-handling commands.
  93. X.IP "ESC A" 20n
  94. XMove back to the beginning of the sentence.
  95. X.IP "ESC E" 20n
  96. XMove forward to the end of the sentence.
  97. X.IP "ESC K" 20n
  98. XKill forward to the end of the sentence.
  99. X.IP "C-X Rubout" 20n
  100. XKill back to the beginning of the sentence.
  101. X.LP
  102. XThe commands ESC A and ESC E move to the beginning and end of the
  103. Xcurrent sentence,
  104. Xrespectively.
  105. XThey were chosen to resemble
  106. XControl-A and Control-E,
  107. Xwhich move to the beginning and end of a line.
  108. XUnlike them,
  109. XESC A and ESC E if repeated or given numeric arguments
  110. Xmove over successive sentences.
  111. X\s-2JOVE\s0 considers a sentence to end wherever there is a ".",
  112. X"?", or "!" followed by the end of a line
  113. Xor by one or more spaces.
  114. XNeither ESC A nor ESC E moves past the
  115. Xend of the line or spaces which delimit the sentence.
  116. X.LP
  117. XJust as C-A and C-E have a kill command,
  118. XC-K,
  119. Xto go with them,
  120. Xso ESC A and ESC E have a corresponding kill command ESC K which kills from
  121. Xpoint to the end of the sentence.
  122. XWith minus one as an argument it
  123. Xkills back to the beginning of the sentence.
  124. XPositive arguments serve as a repeat count.
  125. X.LP
  126. XThere is a special command,
  127. XC-X Rubout for killing back to the beginning of a sentence,
  128. Xbecause this is useful when you change your
  129. Xmind in the middle of composing text.
  130. X.NH 2
  131. XParagraph Commands
  132. X.XS \n(PN 5n
  133. X\*(SN Paragraph Commands
  134. X.XE
  135. X.LP
  136. XThe \s-2JOVE\s0 commands for handling paragraphs are
  137. X.IP "ESC [" 20n
  138. XMove back to previous paragraph beginning.
  139. X.IP "ESC ]" 20n
  140. XMove forward to next paragraph end.
  141. X.LP
  142. XESC [ moves to the beginning of the current or previous paragraph, while
  143. XESC ] moves to the end of the current or next paragraph.  Paragraphs are
  144. Xdelimited by lines of differing indent, or lines with text formatter
  145. Xcommands, or blank lines.  \s-2JOVE\s0 knows how to deal with most indented
  146. Xparagraphs correctly, although it can get confused by one- or two-line
  147. Xparagraphs delimited only by indentation.
  148. X.NH 2
  149. XText Indentation Commands
  150. X.XS \n(PN 5n
  151. X\*(SN Text Indentation Commands
  152. X.XE
  153. X.LP
  154. X.IP "Tab" 20n
  155. XIndent "appropriately" in a mode-dependent fashion.
  156. X.IP "LineFeed" 20n
  157. XIs the same as Return,
  158. Xexcept it copies the indent of the line you just left.
  159. X.IP "ESC M" 20n
  160. XMoves to the line's first non-blank character.
  161. X.LP
  162. X.LP
  163. XThe way to request indentation is with the Tab command.
  164. XIts precise effect depends on the major mode.
  165. XIn \fIText\fP mode,
  166. Xit indents to the next tab stop.
  167. XIn \fIC\fP mode,
  168. Xit indents to the "right" position for C programs.
  169. X.LP
  170. XTo move over the indentation on a line,
  171. Xdo ESC M (\fIfirst-non-blank\fP).
  172. XThis command,
  173. Xgiven anywhere on a line,
  174. Xpositions the cursor at the first non-blank, non-tab character on the line.
  175. X.NH 2
  176. XText Filling
  177. X.XS \n(PN 5n
  178. X\*(SN Text Filling
  179. X.XE
  180. X.LP
  181. X\fIAuto Fill\fP mode causes text to be \fIfilled\fP
  182. X(broken up into lines that fit in a specified width)
  183. Xautomatically as you type it in.
  184. XIf you alter existing text so that it is no longer properly filled,
  185. X\s-2JOVE\s0 can fill it again if you ask.
  186. X.LP
  187. XEntering \fIAuto Fill\fP mode is done with ESC X \fIauto-fill-mode\fP.
  188. X>From then on,
  189. Xlines are broken automatically at spaces when they get longer than the
  190. Xdesired width.
  191. XTo leave \fIAuto Fill\fP mode,
  192. Xonce again execute ESC X \fIauto-fill-mode\fP.
  193. XWhen \fIAuto Fill\fP mode is in effect,
  194. Xthe word \fBFill\fP appears in the mode line.
  195. X.LP
  196. XIf you edit the middle of a paragraph,
  197. Xit may no longer correctly be filled.
  198. XTo refill a paragraph,
  199. Xuse the command ESC J (\fIfill-paragraph\fP).
  200. XIt causes the paragraph that point is inside to be filled.
  201. XAll the line breaks are removed and new ones inserted where necessary.
  202. X.LP
  203. XThe maximum line width for filling is in the variable \fIright-margin\fP.
  204. XBoth ESC J and auto-fill make sure that no line exceeds this width.
  205. XThe value of \fIright-margin\fP is initially 72.
  206. X.LP
  207. XNormally ESC J figures out the indent of the paragraph and uses that same
  208. Xindent when filling.  If you want to change the indent of a paragraph you
  209. Xset \fIleft-margin\fP to the new position and type C-U\ ESC\ J.
  210. X\fIfill-paragraph\fP, when supplied a numeric argument, uses the value of
  211. X\fIleft-margin\fP.
  212. X.LP
  213. XIf you know where you want to set the right margin but you don't know the
  214. Xactual value, move to where you want to set the value and use the
  215. X\fIright-margin-here\fP command.  \fIleft-margin-here\fP does the same
  216. Xfor the \fIleft-margin\fP variable.
  217. X.NH 2
  218. XCase Conversion Commands
  219. X.XS \n(PN 5n
  220. X\*(SN Case Conversion Commands
  221. X.XE
  222. X.LP
  223. X.IP "ESC L" 15n
  224. XConvert following word to lower case.
  225. X.IP "ESC U" 15n
  226. XConvert following word to upper case.
  227. X.IP "ESC C" 15n
  228. XCapitalize the following word.
  229. X.LP
  230. X.LP
  231. XThe word conversion commands are most useful.
  232. XESC L converts the word after point to lower case,
  233. Xmoving past it.
  234. XThus,
  235. Xsuccessive ESC L's convert successive words.
  236. XESC U converts to all capitals instead,
  237. Xwhile ESC C puts the first letter of the word into upper case and the
  238. Xrest into lower case.
  239. XAll these commands convert several words at once if given an argument.
  240. XThey are especially convenient for
  241. Xconverting a large amount of text from all upper case to mixed case,
  242. Xbecause you can move through the test using ESC L,
  243. XESC U or ESC C on each word as appropriate.
  244. X.LP
  245. XWhen given a negative argument,
  246. Xthe word case conversion commands apply to
  247. Xthe appropriate number of words before point,
  248. Xbut do not move point.
  249. XThis is convenient when you have just typed a word in the wrong case.
  250. XYou can give the case conversion command and continue typing.
  251. X.LP
  252. XIf a word case conversion command is given in the middle of a word,
  253. Xit applies only to the part of the word which follows the cursor,
  254. Xtreating it as a whole word.
  255. X.LP
  256. XThe other case conversion functions are \fIcase-region-upper\fP and
  257. X\fIcase-region-lower\fP,
  258. Xwhich convert everything between point and mark to the specified case.
  259. XPoint and mark remain unchanged.
  260. X.NH 2
  261. XCommands for Fixing Typos
  262. X.XS \n(PN 5n
  263. X\*(SN Commands for Fixing Typos
  264. X.XE
  265. X.LP
  266. XIn this section we describe the commands that are especially useful
  267. Xfor the times when you catch a mistake on your text after you have made it,
  268. Xor change your mind while composing text on line.
  269. X.IP "Rubout" 25n
  270. XDelete last character.
  271. X.IP "ESC Rubout" 25n
  272. XKill last word.
  273. X.IP "C-X Rubout" 25n
  274. XKill to beginning of sentence.
  275. X.IP "C-T" 25n
  276. XTranspose two characters.
  277. X.IP "C-X C-T" 25n
  278. XTranspose two lines.
  279. X.IP "ESC Minus ESC L" 25n
  280. XConvert last word to lower case.
  281. X.IP "ESC Minus ESC U" 25n
  282. XConvert last word to upper case.
  283. X.IP "ESC Minus ESC C" 25n
  284. XConvert last word to lower case with capital initial.
  285. X.LP
  286. X.NH 2
  287. XKilling Your Mistakes
  288. X.XS \n(PN 5n
  289. X\*(SN Killing Your Mistakes
  290. X.XE
  291. X.LP
  292. XThe Rubout command is the most important correction command.
  293. XWhen used among printing (self-inserting) characters,
  294. Xit can be thought of as canceling the last character typed.
  295. X.LP
  296. XWhen your mistake is longer than a couple of characters,
  297. Xit might be more convenient to use ESC Rubout or C-X Rubout.
  298. XESC Rubout kills back to the start of the last word,
  299. Xand C-X Rubout kills back to the start of the last sentence.
  300. XC-X Rubout is particularly useful when
  301. Xyou are thinking of what to write as you type it,
  302. Xin case you change your mind about phrasing.
  303. XESC Rubout and C-X Rubout save the killed text for C-Y and ESC Y to retrieve.
  304. X.LP
  305. XESC Rubout is often useful even when you have typed only a few
  306. Xcharacters wrong,
  307. Xif you know you are confused in your typing and aren't sure what you typed.
  308. XAt such a time,
  309. Xyou cannot correct with
  310. XRubout except by looking at the screen to see what you did.
  311. XIt requires less thought to kill the whole word and start over again,
  312. Xespecially if the system is heavily loaded.
  313. X.LP
  314. XIf you were typing a command or command parameters, C-G will abort the
  315. Xcommand with no further processing.
  316. X.NH 2
  317. XTransposition
  318. X.XS \n(PN 5n
  319. X\*(SN Transposition
  320. X.XE
  321. X.LP
  322. XThe common error of transposing two characters can be fixed
  323. Xwith the C-T (\fItranspose-characters\fP) command.
  324. XNormally,
  325. XC-T transposes the two characters on either side of the cursor
  326. Xand moves the cursor forward one character.  Repeating the command
  327. Xseveral times "drags" a character to the right.
  328. X(Remember that \fIpoint\fP is considered to be between two characters,
  329. Xeven though the visible cursor in your terminal is on only one of them.)
  330. XWhen given at the end of a line,
  331. Xrather than switching the last character of the line with the line separator,
  332. Xwhich would be useless,
  333. XC-T transposes the last two characters on the line.
  334. XSo,
  335. Xif you catch your transposition error right away,
  336. Xyou can fix it with just a C-T.
  337. XIf you don't catch it so fast,
  338. Xyou must move the cursor back to between the two characters.
  339. X.LP
  340. XTo transpose two lines,
  341. Xuse the C-X C-T (\fItranspose-lines\fP) command.  The line containing the
  342. Xcursor is exchanged with the line above it; the cursor is left at the
  343. Xbeginning of the line following its original position.
  344. X.NH 2
  345. XChecking and Correcting Spelling
  346. X.XS \n(PN 5n
  347. X\*(SN Checking and Correcting Spelling
  348. X.XE
  349. X.LP
  350. XWhen you write a paper,
  351. Xyou should correct its spelling at some point close to finishing it.
  352. XTo correct the entire buffer,
  353. Xdo ESC X \fIspell-buffer\fP.
  354. XThis invokes the
  355. X.UX
  356. X.I spell
  357. Xprogram,
  358. Xwhich prints a list of all the misspelled words.
  359. X\s-2JOVE\s0 catches the list and places it in a
  360. X\s-2JOVE\s0 buffer called \fBSpell\fP.
  361. XYou are given an opportunity to delete from that buffer any words that
  362. Xaren't really errors;
  363. Xthen \s-2JOVE\s0 looks up each misspelled word and
  364. Xremembers where it is in the buffer being corrected.
  365. XThen you can go forward to each misspelled word with C-X C-N (\fInext-error\fP)
  366. Xand backward with C-X C-P (\fIprevious-error\fP).
  367. XSee the section entitled \fIError Message Parsing\fP.
  368. X.NH 1
  369. XFile Handling
  370. X.XS \n(PN
  371. X\*(SN File Handling
  372. X.XE
  373. X.LP
  374. XThe basic unit of stored data is the file.
  375. XEach program,
  376. Xeach paper,
  377. Xlives usually in its own file.
  378. XTo edit a program or paper,
  379. Xthe editor must be told the name of the file that contains it.
  380. XThis is called \fIvisiting\fP a file.
  381. XTo make your changes to the file permanent on disk,
  382. Xyou must \fIsave\fP the file.
  383. X.NH 2
  384. XVisiting Files
  385. X.XS \n(PN 5n
  386. X\*(SN Visiting Files
  387. X.XE
  388. X.LP
  389. X.IP "C-X C-V" 15n
  390. XVisit a file.
  391. X.IP "C-X C-R" 15n
  392. XSame as C-X C-V.
  393. X.IP "C-X C-S" 15n
  394. XSave the visited file.
  395. X.IP "ESC ~" 15n
  396. XTell \s-2JOVE\s0 to forget that the buffer has been changed.
  397. X.LP
  398. X.LP
  399. X\fIVisiting\fP a file means copying its contents into \s-2JOVE\s0 where you
  400. Xcan edit them.
  401. X\s-2JOVE\s0 remembers the name of the file you visited.
  402. XUnless you use the multiple buffer feature of \s-2JOVE\s0,
  403. Xyou can only be visiting one file at a time.
  404. XThe name of the current selected buffer is visible in the mode line.
  405. X.LP
  406. XThe changes you make with \s-2JOVE\s0 are made in a copy inside \s-2JOVE\s0.
  407. XThe file itself is not changed.
  408. XThe changed text is not permanent until you \fIsave\fP it in a file.
  409. XThe first time you change the text,
  410. Xan asterisk appears at the end of the mode line; this indicates that the text
  411. Xcontains fresh changes which will be lost unless you save them.
  412. X.LP
  413. XTo visit a file,
  414. Xuse the command C-X C-V.
  415. XFollow the command with the name of the file you wish to visit,
  416. Xterminated by a Return.
  417. XYou can abort the command by typing C-G,
  418. Xor edit the filename with many of the standard \s-2JOVE\s0 commands
  419. X(e.g., C-A, C-E, C-F, ESC F, ESC Rubout).
  420. XIf the filename you wish to visit is similar to the filename in the
  421. Xmode line (the default filename),
  422. Xyou can type C-R to insert the default and then edit it.
  423. XIf you do type a Return to finish the command,
  424. Xthe new file's text appears on the screen,
  425. Xand its name appears in the mode line.
  426. XIn addition,
  427. Xits name becomes the new default filename.
  428. X.LP
  429. XIf you wish to save the file and make your changes permanent,
  430. Xtype C-X C-S.
  431. XAfter the save is finished,
  432. XC-X C-S prints the filename and the
  433. Xnumber of characters and lines that it wrote to the file.
  434. XIf there are no changes to save (no asterisk at the end of the mode line),
  435. Xthe file is not saved;
  436. Xotherwise the changes saved and the asterisk at the end of
  437. Xthe mode line will disappear.
  438. X.LP
  439. XWhat if you want to create a file?  Just visit it.
  440. X\s-2JOVE\s0 prints
  441. X\fI(New file)\fP but aside from that behaves as if you had visited an existing
  442. Xempty file.
  443. XIf you make any changes and save them,
  444. Xthe file is created.
  445. XIf you visit a nonexistent file unintentionally
  446. X(because you typed the wrong filename),
  447. Xgo ahead and visit the file you meant.
  448. XIf you don't save the unwanted file,
  449. Xit is not created.
  450. X.LP
  451. XIf you alter one file and then visit another in the same buffer,
  452. X\s-2JOVE\s0 offers to save the old one.
  453. XIf you answer YES,
  454. Xthe old file is saved;
  455. Xif you answer NO,
  456. Xall the changes you have made to it since the last save are lost.
  457. XYou should not type ahead after a file visiting
  458. Xcommand,
  459. Xbecause your type-ahead might answer an unexpected question
  460. Xin a way that you would regret.
  461. X.LP
  462. XSometimes you will change a buffer by accident.
  463. XEven if you undo the effect of the change by editing,
  464. X\s-2JOVE\s0 still knows that "the buffer has been changed".
  465. XYou can tell \s-2JOVE\s0 to pretend that there have been no changes with the
  466. XESC \s+2~\s0 command (\fImake-buffer-unmodified\fP).
  467. XThis command simply clears the "modified" flag which
  468. Xsays that the buffer contains changes which need to be saved.
  469. XEven if
  470. Xthe buffer really \fIis\fP changed \s-2JOVE\s0 will still act as if it were not.
  471. X.LP
  472. XIf \s-2JOVE\s0 is about to save a file and sees that the date of the version
  473. Xon disk does not match what \s-2JOVE\s0 last read or wrote,
  474. X\s-2JOVE\s0 notifies you of this fact,
  475. Xand asks what to do, because this probably means that something is wrong.
  476. XFor example,
  477. Xsomebody else may have been editing the same file.
  478. XIf this is so,
  479. Xthere is a good chance that your work
  480. Xor his work will be lost if you don't take the proper steps.
  481. XYou should first find out exactly what is going on.
  482. XIf you determine that somebody else has modified the file,
  483. Xsave your file under a different filename and then DIFF the two files
  484. Xto merge the two sets of changes.  (The "patch" command is useful for
  485. Xapplying the results of context diffs directly).
  486. XAlso get in touch with the other person so that the files don't diverge
  487. Xany further.
  488. X.NH 2
  489. XHow to Undo Drastic Changes to a File
  490. X.XS \n(PN 5n
  491. X\*(SN How to Undo Drastic Changes to a File
  492. X.XE
  493. X.LP
  494. XIf you have made several extensive changes to a file and then change
  495. Xyour mind about them,
  496. Xand you haven't yet saved them,
  497. Xyou can get rid of them by reading in the previous version of the file.
  498. XYou can do this with the C-X C-V command,
  499. Xto visit the unsaved version of the file.
  500. X.NH 2
  501. XRecovering from system/editor crashes
  502. X.XS \n(PN 5n
  503. X\*(SN Recovering from system/editor crashes
  504. X.XE
  505. X.LP
  506. XJOVE does not have \fIAuto Save\fP mode, but it does provide a way to
  507. Xrecover your work in the event of a system or editor crash.  JOVE saves
  508. Xinformation about the files you're editing every so many changes to a
  509. Xbuffer to make recovery possible.  Since a relatively small amount of
  510. Xinformation is involved it's hardly even noticeable when JOVE does this.  The
  511. Xvariable "sync-frequency" says how often to save the necessary
  512. Xinformation, and the default is every 50 changes.  50 is a very
  513. Xreasonable number: if you are writing a paper you will not lose more than
  514. Xthe last 50 characters you typed, which is less than the average length
  515. Xof a line.
  516. X.NH 2
  517. XMiscellaneous File Operations
  518. X.XS \n(PN 5n
  519. X\*(SN Miscellaneous File Operations
  520. X.XE
  521. X.LP
  522. X.LP
  523. XESC X \fIwrite-file\fP <file><return> writes the contents of the buffer
  524. Xinto the file <file>,
  525. Xand then visits that file.
  526. XIt can be thought of as a way of "changing the name" of
  527. Xthe file you are visiting.
  528. XUnlike C-X C-S,
  529. X\fIwrite-file\fP saves even if the buffer has not been changed.
  530. XC-X C-W is another way of getting this command.
  531. X.LP
  532. XESC X \fIinsert-file\fP <file><return> inserts the contents of <file> into the
  533. Xbuffer at point,
  534. Xleaving point unchanged before the contents.
  535. XYou can also use C-X C-I to get this command.
  536. X.LP
  537. XESC X \fIwrite-region\fP <file><return> writes the region (the text between
  538. Xpoint and mark) to the specified file.
  539. XIt does not set the visited filename.
  540. XThe buffer is not changed.
  541. X.LP
  542. XESC X \fIappend-region\fP <file><return> appends the region to <file>.
  543. XThe text is added to the end of <file>.
  544. X.NH 1
  545. XUsing Multiple Buffers
  546. X.XS \n(PN
  547. X\*(SN Using Multiple Buffers
  548. X.XE
  549. X.LP
  550. XWhen we speak of "the buffer",
  551. Xwhich contains the text you are editing,
  552. Xwe have given the impression that there is only one.
  553. XIn fact,
  554. Xthere may be many of them,
  555. Xeach with its own body of text.
  556. XAt any time only one buffer can be \fIselected\fP and available for editing,
  557. Xbut it isn't hard to switch to a different one.
  558. XEach buffer individually remembers which file it is visiting,
  559. Xwhat modes are in effect,
  560. Xand whether there are any changes that need saving.
  561. X.IP "C-X B" 15n
  562. XSelect or create a buffer.
  563. X.IP "C-X C-F" 15n
  564. XVisit a file in its own buffer.
  565. X.IP "C-X C-B" 15n
  566. XList the existing buffers.
  567. X.IP "C-X K" 15n
  568. XKill a buffer.
  569. X.LP
  570. XEach buffer in \s-2JOVE\s0 has a single name,
  571. Xwhich normally doesn't change.
  572. XA buffer's name can be any length.
  573. XThe name of the currently selected buffer
  574. Xand the name of the file visited in it
  575. Xare visible in the mode line when you are at top level.
  576. XA newly started \s-2JOVE\s0 has only one buffer,
  577. Xnamed \fBMain\fP, unless you specified files to edit in the
  578. Xshell command that started \s-2JOVE\s0.
  579. X.NH 2
  580. XCreating and Selecting Buffers
  581. X.XS \n(PN 5n
  582. X\*(SN Creating and Selecting Buffers
  583. X.XE
  584. X.LP
  585. XTo create a new buffer,
  586. Xyou need only think of a name for it (say, FOO)
  587. Xand then do C-X B FOO<return>,
  588. Xwhich is the command C-X B (\fIselect-buffer\fP) followed by the name.
  589. XThis makes a new,
  590. Xempty buffer (if one by that name didn't previously exist) 
  591. Xand selects it for editing.
  592. XThe new buffer is not visiting any file,
  593. Xso if you try to save it you will be asked for the filename to use.
  594. XEach buffer has its own major mode;
  595. Xthe new buffer's major mode is \fIText\fP mode by default.
  596. X.LP
  597. XTo return to buffer FOO later after having switched to another,
  598. Xthe same command C-X B FOO<return> is used,
  599. Xsince C-X B can tell whether a buffer named FOO exists already or not.
  600. XC-X B Main<return> reselects the buffer Main that \s-2JOVE\s0 started out with.
  601. XJust C-X B<return> reselects the previous buffer.
  602. XRepeated C-X B<return>'s alternate between the last two buffers selected.
  603. X.LP
  604. XYou can also read a file into its own newly created buffer,
  605. Xall with one command: C-X C-F (\fIfind-file\fP),
  606. Xfollowed by the filename.
  607. XThe name of the buffer is the last element of the file's pathname.
  608. XC-F stands for "Find",
  609. Xbecause if the specified file already resides in a buffer in your \s-2JOVE\s0,
  610. Xthat buffer is reselected.
  611. XSo you need not remember whether you have brought the file in already or not.
  612. XA buffer created by C-X C-F can be reselected later with C-X B or C-X C-F,
  613. Xwhichever you find more convenient.
  614. XNonexistent files can be created with C-X C-F just as they can with C-X C-V.
  615. X.NH 2
  616. XUsing Existing Buffers
  617. X.XS \n(PN 5n
  618. X\*(SN Using Existing Buffers
  619. X.XE
  620. X.LP
  621. XTo get a list of all the buffers that exist,
  622. Xdo C-X C-B (\fIlist-buffers\fP).
  623. XEach buffer's type,
  624. Xname,
  625. Xand visited filename is printed.
  626. XAn asterisk before the buffer name indicates a
  627. Xbuffer which contains changes that have not been saved. The number
  628. Xthat appears at the beginning of a line in a C-X C-B listing is that
  629. Xbuffer's \fIbuffer number\fP.
  630. XYou can select a buffer by typing its number in place of its name.
  631. XIf a buffer with that number doesn't already exist,
  632. Xa new buffer is created with that number as its name.
  633. X.LP
  634. XIf several buffers have modified text in them,
  635. Xyou should save some of them with C-X C-M (\fIwrite-modified-files\fP).
  636. XThis finds all the buffers that need saving and then saves them.
  637. XSaving the buffers this way is much
  638. Xeasier and more efficient (but more dangerous)
  639. Xthan selecting each one and typing C-X C-S.
  640. XIf you give C-X C-M an argument, \s-2JOVE\s0 will ask for confirmation
  641. Xbefore saving each buffer.
  642. X.LP
  643. XESC X \fIrename-buffer\fP <new name><return> changes the name of the currently
  644. Xselected buffer.
  645. X.LP
  646. XESC X \fIerase-buffer\fP <buffer name><return> erases the contents of the
  647. X<buffer name> without deleting the buffer entirely.
  648. X.NH 2
  649. XKilling Buffers
  650. X.XS \n(PN 5n
  651. X\*(SN Killing Buffers
  652. X.XE
  653. X.LP
  654. XAfter you use a \s-2JOVE\s0 for a while,
  655. Xit may fill up with buffers which you no longer need.
  656. XEventually you can reach a point where trying to
  657. Xcreate any more results in an "out of memory" or "out of lines"
  658. Xerror.
  659. XWhen this happens you will want to kill some buffers with the
  660. XC-X K (\fIdelete-buffer\fP) command.
  661. XYou can kill the buffer FOO by doing C-X K FOO<return>.
  662. XIf you type C-X K <return> JOVE will kill the previously selected buffer.
  663. XIf you try to kill a buffer that needs saving \s-2JOVE\s0
  664. Xwill ask you to confirm it.
  665. X.LP
  666. XIf you need to kill several buffers, use the command \fIkill-some-buffers\fP.
  667. XThis prompts you with the name of each buffer and asks for confirmation
  668. Xbefore killing that buffer.
  669. X.NH 1
  670. XControlling the Display
  671. X.XS \n(PN
  672. X\*(SN Controlling the Display
  673. X.XE
  674. X.LP
  675. XSince only part of a large file will fit on the screen,
  676. X\s-2JOVE\s0 tries to show the part that is likely to be interesting.
  677. XThe display control commands allow you to see a different part of the file.
  678. X.IP "C-L" 15n
  679. XReposition point at a specified vertical position,
  680. XOR clear and redraw the screen with point in the same place.
  681. X.IP "C-V" 15n
  682. XScroll forwards (a screen or a few lines).
  683. X.IP "ESC V" 15n
  684. XScroll backwards.
  685. X.IP "C-Z" 15n
  686. XScroll forward some lines.
  687. X.IP "ESC Z" 15n
  688. XScroll backwards some lines.
  689. X.LP
  690. X.LP
  691. XThe terminal screen is rarely large enough to display all of your
  692. Xfile.
  693. XIf the whole buffer doesn't fit on the screen,
  694. X\s-2JOVE\s0 shows a contiguous portion of it,
  695. Xcontaining 
  696. X.I point.
  697. XIt continues to show approximately the same portion
  698. Xuntil point moves outside of what is displayed;
  699. Xthen \s-2JOVE\s0 chooses a new portion centered around the new 
  700. X.I point.
  701. XThis is \s-2JOVE\s0's guess as to what you are most interested in seeing,
  702. Xbut if the guess is wrong,
  703. Xyou can use the display control commands to see a different portion.
  704. XThe available screen area through which you can see part of
  705. Xthe buffer is called \fIthe window\fP,
  706. Xand the choice of where in the
  707. Xbuffer to start displaying is also called \fIthe window\fP.  (When 
  708. Xthere is only one window, it plus the mode line and the input line take
  709. Xup the whole screen).
  710. X.LP
  711. XFirst we describe how \s-2JOVE\s0 chooses a new window position on its own.
  712. XThe goal is usually to place 
  713. X.I point 
  714. Xhalf way down the window.
  715. XThis is controlled by the variable \fIscroll-step\fP,
  716. Xwhose value is the number of
  717. Xlines above the bottom or below the top of the window that the line
  718. Xcontaining point is placed.
  719. XA value of 0 (the initial value) means center 
  720. X.I point
  721. Xin the window.
  722. X.LP
  723. XThe basic display control command is C-L (\fIredraw-display\fP).
  724. XIn its simplest form,
  725. Xwith no argument,
  726. Xit tells \s-2JOVE\s0 to choose a new window position,
  727. Xcentering point half way from the top as usual.
  728. X.LP
  729. XC-L with a positive argument chooses a new window so as to put point
  730. Xthat many lines from the top.
  731. XAn argument of zero puts point on the very top line.
  732. XPoint does not move with respect to the text; rather,
  733. Xthe text and point move rigidly on the screen.
  734. X.LP
  735. XIf point stays on the same line,
  736. Xthe window is first cleared and then redrawn.
  737. XThus,
  738. Xtwo C-L's in a row are guaranteed to clear the current window.
  739. XESC C-L will clear and redraw the entire screen.
  740. X.LP
  741. XThe \fIscrolling\fP commands C-V,
  742. XESC V,
  743. XC-Z,
  744. Xand ESC Z,
  745. Xlet you move the whole display up or down a few lines.
  746. XC-V (\fInext-page\fP) with an
  747. Xargument shows you that many more lines at the bottom of the screen,
  748. Xmoving the text and point up together as C-L might.
  749. XC-V with a
  750. Xnegative argument shows you more lines at the top of the screen,
  751. Xas does ESC V (\fIprevious-page\fP) with a positive argument.
  752. X.LP
  753. XTo read the buffer a window at a time,
  754. Xuse the C-V command with no argument.
  755. XIt takes the last line at the bottom of the window and puts
  756. Xit at the top,
  757. Xfollowed by nearly a whole window of lines not visible before.
  758. XPoint is put at the top of the window.
  759. XThus, each C-V shows the "next page of text",
  760. Xexcept for one line of overlap to provide context.
  761. XTo move backward,
  762. Xuse ESC V without an argument,
  763. Xwhich moves a whole window backwards (again with a line of overlap).
  764. X.LP
  765. XC-Z and ESC Z scroll one line forward and one line backward,
  766. Xrespectively.
  767. XThese are convenient for moving in units of lines
  768. Xwithout having to type a numeric argument.
  769. X.NH 2
  770. XMultiple Windows
  771. X.XS \n(PN 5n
  772. X\*(SN Multiple Windows
  773. X.XE
  774. X.LP
  775. X\s-2JOVE\s0 allows you to split the screen into two or more \fIwindows\fP and
  776. Xuse them to display parts of different files,
  777. Xor different parts of the same file.
  778. X.IP "C-X 2" 15n
  779. XDivide the current window into two smaller ones.
  780. X.IP "C-X 1" 15n
  781. XDelete all windows but the current one.
  782. X.IP "C-X D" 15n
  783. XDelete current window.
  784. X.IP "C-X N" 15n
  785. XSwitch to the next window.
  786. X.IP "C-X P" 15n
  787. XSwitch to the previous window.
  788. X.IP "C-X O" 15n
  789. XSame as C-X P.
  790. X.IP "C-X ^" 15n
  791. XMake this window bigger.
  792. X.IP "ESC C-V" 15n
  793. XScroll the other window.
  794. X.LP
  795. X.LP
  796. XWhen using \fImultiple window\fP mode,
  797. Xthe text portion of the screen
  798. Xis divided into separate parts called \fIwindows\fP,
  799. Xwhich can display different pieces of text.
  800. XEach window can display different files,
  801. Xor parts of the same file.
  802. XOnly one of the windows is 
  803. X.I active; 
  804. Xthat is
  805. Xthe window which the cursor is in.
  806. XEditing normally takes place in that window alone.
  807. XTo edit in another window,
  808. Xyou would give a command to move the cursor to the other window,
  809. Xand then edit there.
  810. X.LP
  811. XEach window displays a mode line for the buffer it's displaying.
  812. XThis is useful to keep track of which window corresponds with which
  813. Xfile.  In addition, the mode line serves as a separator between windows.
  814. XBy setting the variable \fImode-line-should-standout\fP to "on" you can
  815. Xhave \s-2JOVE\s0 display the mode-line in reverse video (assuming your
  816. Xparticular terminal has the reverse video capability).
  817. X.LP
  818. XThe command C-X 2 (\fIsplit-current-window\fP) enters multiple window mode.
  819. XA new mode line appears across the middle of the screen,
  820. Xdividing the text display area into two halves.
  821. XBoth windows contain the same buffer and display the same position in it,
  822. Xnamely where point was at the time you issued the command.
  823. XThe cursor moves to the second window.
  824. X.LP
  825. XTo return to viewing only one window,
  826. Xuse the command C-X 1 (\fIdelete-other-windows\fP).
  827. XThe current window expands to fill the whole screen,
  828. Xand the other windows disappear until the next C-X 2.
  829. X(The buffers and their contents are unaffected by any of the
  830. Xwindow operations).
  831. X.LP
  832. XWhile there is more than one window,
  833. Xyou can use C-X N (\fInext-window\fP) to switch to the next window,
  834. Xand C-X P (\fIprevious-window\fP) to switch to the previous one.
  835. XIf you are in the bottom window and you type C-X N,
  836. Xyou will be placed in the top window,
  837. Xand the same kind of thing happens when you type C-X P in the top window,
  838. Xnamely you will be placed in the bottom window.
  839. XC-X O is the same as C-X P.
  840. XIt stands for "other window" because when there are only two windows,
  841. Xrepeated use of this command will switch between the two windows.
  842. X.LP
  843. XOften you will be editing one window while using the other just for reference.
  844. XThen,
  845. Xthe command ESC C-V (\fIpage-next-window\fP) is very useful.
  846. XIt scrolls the next window,
  847. Xas if you switched to the next window,
  848. Xtyped C-V,
  849. Xand switched back,
  850. Xwithout your having to do all that.
  851. XWith a negative argument,
  852. XESC C-V will do an ESC V in the next window.
  853. X.LP
  854. XWhen a window splits,
  855. Xboth halves are approximately the same size.
  856. XYou can redistribute the screen space between the windows with
  857. Xthe C-X ^ (\fIgrow-window\fP) command.
  858. XIt makes the currently selected window grow one line bigger,
  859. Xor as many lines as is specified with a numeric argument.
  860. XUse ESC X \fIshrink-window\fP to make the current window smaller.
  861. X.NH 2
  862. XMultiple Windows and Multiple Buffers
  863. X.XS \n(PN 5n
  864. X\*(SN Multiple Windows and Multiple Buffers
  865. X.XE
  866. X.LP
  867. XBuffers can be selected independently in each window.
  868. XThe C-X B command selects a new buffer in whichever window contains
  869. Xthe cursor.
  870. XOther windows' buffers do not change.
  871. X.LP
  872. XYou can view the same buffer in more than one window.
  873. XAlthough the same buffer appears in both windows,
  874. Xthey have different values of point,
  875. Xso you can move around in one window while the other window
  876. Xcontinues to show the same text.
  877. XThen,
  878. Xhaving found one place you wish to refer to, you can go back into the
  879. Xother window with C-X O or C-X P to make your changes.
  880. X.LP
  881. XIf you have the same buffer in both windows,
  882. Xyou must beware of trying to visit a different file in one of
  883. Xthe windows with C-X C-V,
  884. Xbecause if you bring a new file into this buffer,
  885. Xit will replaced the old file in \fIboth\fP windows.
  886. XTo view different files in different windows,
  887. Xyou must switch buffers in one of the windows first
  888. X(with C-X B or C-X C-F, perhaps).
  889. X.LP
  890. XA convenient "combination" command for viewing something in another
  891. Xwindow is C-X 4 (\fIwindow-find\fP).
  892. XWith this command you can ask to see any specified buffer,
  893. Xfile or tag in the other window.
  894. XFollow the C-X 4 with either B and a buffer name,
  895. XF and a filename,
  896. Xor T and a tag name.
  897. XThis switches to the other window and finds there what you specified.
  898. XIf you were previously in one-window mode,
  899. Xmultiple-window mode is entered.
  900. XC-X 4 B is similar to C-X 2 C-X B.
  901. XC-X 4 F is similar to C-X 2 C-X C-F.
  902. XC-X 4 T is similar to C-X 2 C-X
  903. XT.
  904. XThe difference is one of efficiency,
  905. Xand also that C-X 4 works equally well if you are already using two windows.
  906. X.NH 1
  907. XProcesses Under \s-2JOVE\s0
  908. X.XS \n(PN
  909. X\*(SN Processes Under \s-2JOVE\s0
  910. X.XE
  911. X.LP
  912. XAnother feature in \s-2JOVE\s0 is its ability to interact with
  913. X.UX
  914. Xin a useful way.
  915. XYou can run other
  916. X.UX
  917. Xcommands from \s-2JOVE\s0 and catch their output in \s-2JOVE\s0 buffers.
  918. XIn this chapter we will discuss the different
  919. Xways to run and interact with
  920. X.UX
  921. Xcommands.
  922. X.NH 2
  923. XNon-interactive
  924. X.UX
  925. Xcommands
  926. X.XS \n(PN 5n
  927. X\*(SN Non-interactive
  928. X.XE
  929. X.LP
  930. XTo run a
  931. X.UX
  932. Xcommand from \s-2JOVE\s0 just type "C-X !" followed by the name
  933. Xof the command terminated with Return.
  934. XFor example,
  935. Xto get a list of all the users on the system,
  936. Xyou do:
  937. X.DS I
  938. XC-X ! who<return>
  939. X.DE
  940. XThen \s-2JOVE\s0 picks a reasonable buffer in which the output from the
  941. Xcommand will be placed.
  942. XE.g.,
  943. X"who" uses a buffer called \fBwho\fP;
  944. X"ps alx" uses \fBps\fP;
  945. Xand "fgrep -n foo *.c" uses \fBfgrep\fP.
  946. XIf \s-2JOVE\s0
  947. Xwants to use a buffer that already exists it first erases the old contents.
  948. XIf the buffer it selects holds a file,
  949. Xnot output from a previous shell command,
  950. Xyou must first delete that buffer with C-X K.
  951. X.LP
  952. XOnce \s-2JOVE\s0 has picked a buffer it puts that buffer in a window so you
  953. Xcan see the command's output as it is running.
  954. XIf there is only one window \s-2JOVE\s0 will automatically make another one.
  955. XOtherwise,
  956. X\s-2JOVE\s0
  957. Xtries to pick the most convenient window which isn't the current one.
  958. X.LP
  959. XIt's not a good idea to type anything while the command is running.
  960. XThere are two reasons for this:
  961. X.IP (i)
  962. X\s-2JOVE\s0 won't see the characters (thus won't execute them) until the
  963. Xcommand finishes,
  964. Xso you may forget what you've typed.
  965. X.IP (ii)
  966. XAlthough \s-2JOVE\s0 won't know what you've typed,
  967. Xit 
  968. X.I will
  969. Xknow that you've typed something,
  970. Xand then it will try to be "smart" and not update the
  971. Xdisplay until it's interpreted what you've typed.
  972. XBut,
  973. Xof course,
  974. X\s-2JOVE\s0 won't interpret what you type until the
  975. X.UX
  976. Xcommand completes,
  977. Xso you're left with the uneasy feeling you get when you
  978. Xdon't know what the hell the computer is doing*.
  979. X.FS
  980. X*This is a bug and should be fixed,
  981. Xbut probably won't be for a while.
  982. X.FE
  983. X.LP
  984. XIf you want to interrupt the command for some reason (perhaps you
  985. Xmistyped it, or you changed your mind) you can type C-].
  986. XTyping this
  987. Xinside \s-2JOVE\s0 while a process is running is the same as typing C-C when
  988. Xyou are outside \s-2JOVE\s0,
  989. Xnamely the process stops in a hurry.
  990. X.LP
  991. XWhen the command finishes, \s-2JOVE\s0 puts you back in the window in which 
  992. Xyou started.
  993. XThen it prints a message indicating whether or not the command
  994. Xcompleted successfully in its (the command's) opinion.
  995. XThat is,
  996. Xif the command had what it considers an error
  997. X(or you interrupt it with C-])
  998. X\s-2JOVE\s0 will print an appropriate message.
  999. X.NH 2
  1000. XLimitations of Non-Interactive Processes
  1001. X.XS \n(PN 5n
  1002. X\*(SN Limitations of Non-Interactive Processes
  1003. X.XE
  1004. X.LP
  1005. XThe reason these are called non-interactive processes is that you
  1006. Xcan't type any input to them; you can't interact with them; they can't
  1007. Xask you questions because there is no way for you to answer.
  1008. XFor example,
  1009. Xyou can't run a command interpreter (a shell), or 
  1010. X.I mail
  1011. Xor 
  1012. X.I crypt
  1013. Xwith C-X ! because there is no way to provide it with input.
  1014. XRemember that \s-2JOVE\s0 (not the process in the window)
  1015. Xis listening to your keyboard,
  1016. Xand \s-2JOVE\s0 waits until the process dies before it looks at
  1017. Xwhat you type.
  1018. X.LP
  1019. XC-X ! is useful for running commands that do some output and then exit.
  1020. XFor example,
  1021. Xit's very useful to use with the C compiler to
  1022. Xcatch compilation error messages (see Compiling C Programs),
  1023. Xor with the \fIgrep\fP commands.
  1024. X.NH 2
  1025. XInteractive Processes \(em Run a Shell in a Window
  1026. X.XS \n(PN 5n
  1027. X\*(SN Interactive Processes \(em Run a Shell in a Window
  1028. X.XE
  1029. X.LP
  1030. XSome versions of \s-2JOVE\s0\(dg
  1031. X.FS
  1032. X\(dg For example, the version provided with 4.3BSD.
  1033. X.FE
  1034. Xhave the capability of running interactive
  1035. Xprocesses.
  1036. XThis is more useful than non-interactive processes for
  1037. Xcertain types of jobs:
  1038. X.IP (i)
  1039. XYou can go off and do some editing while the command is running.
  1040. XThis is useful for commands that do sporadic output and run for fairly long
  1041. Xperiods of time.
  1042. X.IP (ii)
  1043. XUnlike non-interactive processes,
  1044. Xyou can type input to these.
  1045. XIn addition,
  1046. Xyou can edit what you type with the power of all the \s-2JOVE\s0
  1047. Xcommands \fIbefore\fP you send the input to the process.
  1048. XThis is a really important feature,
  1049. Xand is especially useful for running a shell in a window.
  1050. X.IP (iii)
  1051. XBecause you can continue with normal editing while one of the
  1052. Xprocesses is running,
  1053. Xyou can create a bunch of contexts and manage them
  1054. X(select them, delete them, or temporarily put them aside)
  1055. Xwith \s-2JOVE\s0's window and buffer mechanisms.
  1056. X.LP
  1057. XAlthough we may have given an image of processes being attached to 
  1058. X.I windows,
  1059. Xin fact they are attached to 
  1060. X.I buffers.
  1061. XTherefore,
  1062. Xonce an \fIi-process\fP is running you can select another buffer into that window,
  1063. Xor if you wish you can delete the window altogether.
  1064. XIf you reselect that buffer later it will be up to date.
  1065. XThat is,
  1066. Xeven though the
  1067. Xbuffer wasn't visible it was still receiving output from the process.
  1068. XYou don't have to worry about missing anything when the buffer isn't visible.
  1069. X.NH 2
  1070. XAdvantages of Running Processes in \s-2JOVE\s0 Windows.
  1071. X.XS \n(PN 5n
  1072. X\*(SN Advantages of Running Processes in \s-2JOVE\s0 Windows.
  1073. X.XE
  1074. X.LP
  1075. XThere are several advantages to running a shell in a window.
  1076. XWhat you type isn't seen immediately by the process;
  1077. Xinstead \s-2JOVE\s0 waits until
  1078. Xyou type an entire line before passing it on to the process to read.
  1079. XThis means that before you type <return>
  1080. Xall of \s-2JOVE\s0's editing
  1081. Xcapabilities are available for fixing errors on your input line.
  1082. XIf you discover an error at the beginning of the line,
  1083. Xrather than erasing the whole line and starting over,
  1084. Xyou can simply move to the error,
  1085. Xcorrect it,
  1086. Xmove back and continue typing.
  1087. X.LP
  1088. XAnother feature is that you have the entire history of your session in
  1089. Xa \s-2JOVE\s0 buffer.
  1090. XYou don't have to worry about output from a command
  1091. Xmoving past the top of the screen.
  1092. XIf you missed some output you can
  1093. Xmove back through it with ESC V and other commands.
  1094. XIn addition,
  1095. Xyou can save yourself retyping a command (or a similar one) by sending
  1096. Xedited versions of previous commands, or edit the output of one command
  1097. Xto become a list of commands to be executed ("immediate shell scripts").
  1098. X.NH 2
  1099. XDifferences between Normal and I-process Buffers
  1100. X.XS \n(PN 5n
  1101. X\*(SN Differences between Normal and I-process Buffers
  1102. X.XE
  1103. X.LP
  1104. X\s-2JOVE\s0 behaves differently in several ways when you are in an \fIi-process\fP
  1105. Xbuffer.
  1106. XMost obviously, <return> does different things
  1107. Xdepending on both your position in the buffer and on the state of the process.
  1108. XIn the normal case,
  1109. Xwhen point is at the end of the buffer,
  1110. XReturn does what you'd expect: it inserts a line-separator and then
  1111. Xsends the line to the process.
  1112. XIf you are somewhere else in the buffer,
  1113. Xpossibly positioned at a previous command that you want to edit,
  1114. XReturn will place a copy of that line
  1115. X(with the prompt discarded if there is one)
  1116. Xat the end of the buffer and move you there.
  1117. XThen you can edit the line and type Return as in the normal case.
  1118. XIf the process has died for some reason,
  1119. XReturn does nothing.
  1120. XIt doesn't even insert itself.
  1121. XIf that happens unexpectedly,
  1122. Xyou should type ESC X \fIlist-processes\fP<return>
  1123. Xto get a list of each process and its state.
  1124. XIf your process died abnormally,
  1125. X\fIlist-processes\fP may help you figure out why.
  1126. X.NH 2
  1127. XHow to Run a Shell in a Window
  1128. X.XS \n(PN 5n
  1129. X\*(SN How to Run a Shell in a Window
  1130. X.XE
  1131. X.LP
  1132. XType ESC X \fIshell\fP<return> to start up a shell.
  1133. XAs with C-X !,
  1134. X\s-2JOVE\s0 will
  1135. Xcreate a buffer,
  1136. Xcalled \fB*shell*\-1\fP,
  1137. Xand select a window for this new buffer.
  1138. XBut unlike C-X ! you will be left in the new window.
  1139. XNow,
  1140. Xthe shell process is said to be attached to \fBshell\-1\fP.
  1141. @//E*O*F doc/jove.2//
  1142. if test 39282 -ne "`wc -c <'doc/jove.2'`"; then
  1143.     echo shar: error transmitting "'doc/jove.2'" '(should have been 39282 characters)'
  1144. fi
  1145. fi # end of overwriting check
  1146. echo shar: extracting "'doc/recover.nr'" '(3997 characters)'
  1147. if test -f 'doc/recover.nr' ; then 
  1148.   echo shar: will not over-write existing file "'doc/recover.nr'"
  1149. else
  1150. sed 's/^X//' >doc/recover.nr <<'@//E*O*F doc/recover.nr//'
  1151. X.TH RECOVER 1 "12 February 1986"
  1152. X.ad
  1153. X.SH NAME
  1154. Xrecover - recover JOVE buffers after a system/editor crash
  1155. X.SH SYNOPSIS
  1156. Xjove -r
  1157. X.SH DESCRIPTION
  1158. XRECOVER lets you recover your work in the JOVE editor in the event of a
  1159. Xsystem or JOVE crash.  It is designed to put invoked through JOVE with the
  1160. X"-r" switch.  RECOVER looks for JOVE buffers that are left around and are
  1161. Xowned by you.  (You cannot recover other peoples' buffers, obviously.)
  1162. XWhen the system is rebooted after a crash, you type "jove -r" after you've
  1163. Xlogged in.  If there were no buffers that were modified at the time of the
  1164. Xcrash or there were but RECOVER can't get its hands on them, you will be
  1165. Xinformed with the message, "There is nothing to recover."  Otherwise,
  1166. XRECOVER prints the date and time of the version of the buffers it has,
  1167. Xand then waits for you type a command.
  1168. X.LP
  1169. XTo get a list of the buffers RECOVER knows about, use the
  1170. X.I list
  1171. Xcommand.  This will list all the buffers and the files and the number of
  1172. Xlines associated with them.  Next to each buffer is a number.  When you want
  1173. Xto recover a buffer, use the
  1174. X.I get
  1175. Xcommand.  The syntax is
  1176. X.I get buffer filename
  1177. Xwhere
  1178. X.I buffer
  1179. Xis either the buffer's name or the number at the beginning of the line.  If
  1180. Xyou don't type the buffer name or the filename, RECOVER will prompt you
  1181. Xfor them.
  1182. X.LP
  1183. XIf there are a lot of buffers and you want to recover all of them, use the
  1184. X.I recover
  1185. Xcommand.  This will recover each buffer to the name of the buffer with ".#"
  1186. Xprepended to the name (so that the original isn't over-written).  It asks
  1187. Xfor each file and if you want to restore that buffer to that name you type
  1188. X"yes".  If you want to recover the file but to a different name, just type
  1189. Xthat name in.  If you type "no" RECOVER will skip that file and go on
  1190. Xto the next one.
  1191. X.LP
  1192. XIf you want to look at a buffer before deciding to recover it, use the
  1193. X.I print
  1194. Xcommand.  The syntax for this is
  1195. X.I print buffer
  1196. Xwhere
  1197. X.I buffer
  1198. Xagain is either its name or the number.  You can type ^C if you want to
  1199. Xabort printing the file to the terminal, and RECOVER will respond with
  1200. Xan appropriate message.
  1201. X.LP
  1202. XWhen you're done and have all the buffers you want, type the
  1203. X.I quit
  1204. Xcommand to leave.  You will then be asked whether it's okay to delete the
  1205. Xtmp files.  Most of the time that's okay and you should type "yes".  When
  1206. Xyou say that, JOVE removes all traces of those buffers and you won't be able
  1207. Xto look at them again.  (If you recovered some buffers they will still be
  1208. Xaround, so don't worry.)  So, if you're not sure whether you've gotten all
  1209. Xthe buffers, you should answer "no" so that you'll be able to run
  1210. XRECOVER again at a later time (presumably after you've figured out
  1211. Xwhich ones you want to save).
  1212. X.LP
  1213. XIf you type ^C at any time other than when you're printing a file to the
  1214. Xterminal, RECOVER will exit without a word.  If you do this but wish you
  1215. Xhadn't, just type "jove -r" to the shell again, and you will be put back
  1216. Xwith no loss.
  1217. X.SH A SAMPLE SESSION
  1218. X.sp 1
  1219. X.nf
  1220. X% jove -r
  1221. XFound 2 buffers (last updated: Sun Apr 14 14:13:38 1985).
  1222. X(Type '?' for options): list
  1223. X1) buffer recover.1  "/u/staff/jpay/doc/recover.1" (120 lines)
  1224. X2) buffer recover.c  "/u/staff/jpay/jove/recover.c" (635 lines)
  1225. X(Type '?' for options): get recover.1 recover.save
  1226. X"recover.save" 53 lines, 1821 characters.
  1227. X(Type '?' for options): quit
  1228. XShould I delete the tmp files? yes
  1229. X%
  1230. X.fi
  1231. X.LP
  1232. XHere I "got" the buffer
  1233. X.I recover.1
  1234. Xand restored it to the temporary file
  1235. X.I recover.save.
  1236. XIt's generally a good idea to recover buffers to temporary files and then
  1237. Xcompare them to the original or at least look them over before putting them
  1238. Xback in their real name.  This is just in case you were restoring what you
  1239. Xthought you were restoring.
  1240. X.fi
  1241. X.SH FILES
  1242. XTMPDIR - where temporary files are stored.
  1243. X.SH SEE ALSO
  1244. XJOVE(1) - for this to make any sense to you.
  1245. X.SH DIAGNOSTICS
  1246. XRECOVER diagnostics are meant to be self-explanitory.
  1247. X.SH BUGS
  1248. XIt works well enough, but what an awful user interface!
  1249. X.SH AUTHOR
  1250. XJonathan Payne
  1251. @//E*O*F doc/recover.nr//
  1252. if test 3997 -ne "`wc -c <'doc/recover.nr'`"; then
  1253.     echo shar: error transmitting "'doc/recover.nr'" '(should have been 3997 characters)'
  1254. fi
  1255. fi # end of overwriting check
  1256. echo shar: "End of archive 10 (of 13)."
  1257. cp /dev/null ark10isdone
  1258. DONE=true
  1259. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13; do
  1260.     if test -f ark${I}isdone; then
  1261.         echo "You have run archive ${I}."
  1262.     else
  1263.         echo "You still need to run archive ${I}."
  1264.         DONE=false
  1265.     fi
  1266. done
  1267. case $DONE in
  1268.     true)
  1269.         echo "You have run all 13 archives."
  1270.         echo 'Now read the README and Makefile.'
  1271.         ;;
  1272. esac
  1273. ##  End of shell archive.
  1274. exit 0
  1275.